/************************************************************************/
/*    Author: Scott Bevin                                               */
/************************************************************************/


#pragma once

#include "../../XInput\Input.h"
#include "../XCEGui/CEGUIComponent.h"

namespace XF
{
	class CEGuiDebuggerTool
	{
	protected:
		std::string mSkin;
		CEGUIComponent* mGui;
		CEGUI::Window* mRootWindow;

		virtual void OnInitialize(){}
		virtual void OnUpdate(double dT){}
		virtual void OnHandleInput(Input *input, double dT){}
		virtual void OnShutDown(){}

	protected:

	public:
		CEGuiDebuggerTool(){}
		virtual ~CEGuiDebuggerTool(){}

		void Initialize(CEGUIComponent* gui, std::string skin, CEGUI::Window* debugRoot)
		{
			mGui = gui;
			mSkin = skin;
			mRootWindow = debugRoot;

			OnInitialize();
		}

		
		void Update(double dT){OnUpdate(dT);}
		void HandleInput(Input *input, double dT){OnHandleInput(input, dT);}
		void ShutDown(){OnShutDown();}

		virtual void Show() = 0;
		virtual void Hide() = 0;
		virtual bool IsVisible() = 0;

		bool CloseWindowClick( const CEGUI::EventArgs &args )
		{
			Hide();

			return true;
		}
	};
}